﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.SqlClient;
using System.Data;

namespace SAD
{
    class GestorInstalacion
    {
        static private Conexion conexionBD = new Conexion();
                
        static private string GenerarID(object instal)
        {
            string idtabla = "";
            string tabla = "";
            string inicial = "";
            
            if (instal.GetType().ToString().Equals(typeof(Almacen))){
        
                    idtabla = "idAlmacen";
                    tabla = "ALMACEN";
            }
            else {
                if (instal.GetType().ToString().Equals(typeof(CentroAcopio)))
                {

                    idtabla = "idCentroAcopio";
                    tabla = "CENTROACOPIO";
                }
                else
                {
                    if (instal.GetType().ToString().Equals(typeof(PuntoDistribucion)))
                    {

                        idtabla = "idPuntoDistribucion";
                        tabla = "PUNTODISTRIBUCION";
                    }

                }    

            }
        
            String consulta = "SELECT SUBSTRING(MAX("+ idtabla +"),4,9) FROM " + tabla;
            SqlDataReader dataReader = conexionBD.EjecutarReader(consulta);
            dataReader.Read();
            string aux = dataReader[0] + "";
            int r;
            if (aux == "") r = 1;
            else r = Convert.ToInt32(aux) + 1;

            string id = r.ToString();
            int nrodig = id.Length;

            for (int i = 1; i <= 9 - nrodig; i++)
                id = "0" + id;
            id = inicial + id;
            dataReader.Close();
            return id;
        }


        static public void RegistrarInstalacion(object instal)
        {          
            if (instal.GetType().ToString().Equals(typeof(Almacen)))
            {

                Almacen almacen = (Almacen)(instal);
                RegistrarAlmacen(almacen);
            }
            else
            {
                if (instal.GetType().ToString().Equals(typeof(CentroAcopio)))
                {

                    CentroAcopio centro = (CentroAcopio)(instal);
                    RegistrarCentroAcopio(centro);
                }
                else
                {
                    if (instal.GetType().ToString().Equals(typeof(PuntoDistribucion)))
                    {

                        PuntoDistribucion punto = (PuntoDistribucion)(instal);
                        RegistrarPuntoDistribucion(punto);
                    }

                }

            }  
           
        }

        static public void RegistrarAlmacen(Almacen almacen)
        {
           
            string consulta = "";

            string nuevoid = GenerarID(almacen);


            if (almacen.Nombre != "")
            {
                if (almacen.Capacidad != 0)
                {
                    if (almacen.IdUbicacion != "")
                        consulta = "INSERT INTO ALMACEN (IDALMACEN, NOMBRE, TELEFONO, CAPACIDAD,  IDUBICACION)" +
                                          "VALUES ( " + "\'" + @nuevoid + "\'" + "," + "\'" + @almacen.Nombre + "\'" + 
                                          "," + "\'" + @almacen.Telefono + "\'" + "," 
                                          +  @almacen.Capacidad + "," + "\'" + @almacen.IdUbicacion + "\'" + ")";
                    else
                        consulta = "INSERT INTO ALMACEN (IDALMACEN, NOMBRE, TELEFONO, CAPACIDAD)" +
                                          "VALUES ( " + "\'" + @nuevoid + "\'" + "," + "\'" + @almacen.Nombre + "\'" +
                                          "," + "\'" + @almacen.Telefono + "\'" + "," + @almacen.Capacidad + "," + "\'"  + ")";

                }
                
            }

            conexionBD.EjecutarComando(consulta);          
        }

        static public void RegistrarCentroAcopio(CentroAcopio centro)
        {

            string consulta = "";

            string nuevoid = GenerarID(centro);


            if (centro.Nombre != "")
            {
                if (centro.FechaInicio != "")
                {
                    if (centro.IdUbicacion != "")
                        consulta = "INSERT INTO CENTROACOPIO (IDCENTROACOPIO, NOMBRE, FECHAINICIO, FECHAFIN,  IDUBICACION, IDCAMPANA)" +
                                          "VALUES ( " + "\'" + @nuevoid + "\'" + "," + "\'" + @centro.Nombre + "\'" +
                                          "," + "convert(datetime," + "\'" + @centro.FechaInicio + "\'" + ", 103)," + 
                                          "convert(datetime," + "\'" + @centro.FechaFin + "\'" + ", 103),"+ "\'" + @centro.IdUbicacion + "\'" + ","
                                          + @centro.IdCampana + "," + "\'" + ")";
                    
                }

            }

            conexionBD.EjecutarComando(consulta);
        }

        static public void RegistrarPuntoDistribucion(PuntoDistribucion punto)
        {

            string consulta = "";

            string nuevoid = GenerarID(punto);


            if (punto.Nombre != "")
            {
                if (punto.Capacidad != 0)
                {
                    if (punto.IdUbicacion != "")
                        consulta = "INSERT INTO PUNTODISTRIBUCION (IDPUNTODISTRIBUCION, NOMBRE, FECHAINICIO, FECHAFIN, CAPACIDAD,  IDEMERGENCIA, IDUBICACION)" +
                                          "VALUES ( " + "\'" + @nuevoid + "\'" + "," + "\'" + @punto.Nombre + "\'" + "," + 
                                          "convert(datetime," + "\'" + @punto.FechaInicio + "\'" + ", 103)," + 
                                          "convert(datetime," + "\'" + @punto.FechaFin + "\'" + ", 103)," + "\'" + @punto.Capacidad + "\'" + ","
                                          + @punto.IdEmergencia + "," + "\'" + @punto.IdUbicacion + "\'" + ")";
                  
                }

            }

            conexionBD.EjecutarComando(consulta);
        }

        
    }
}
